import axios, { AxiosInstance } from 'axios';
import { ElMessage, ElMessageBox } from 'element-plus';
import qs from 'qs';

// 配置新建一个 axios 实例
const service: AxiosInstance = axios.create({
	baseURL: import.meta.env.VITE_API_URL,
	timeout: 10000,
	headers: { 'Content-Type': 'application/json' },
	paramsSerializer: { serialize(params) { return qs.stringify(params, { allowDots: true }); }, },
});

// 添加请求拦截器
service.interceptors.request.use((config) => {
	return config;
}, (error) => { return Promise.reject(error); }
);

// 添加响应拦截器
service.interceptors.response.use((response) => {
	if (response.data.returncode === 302) {
		let url = `http://baojia-benefit-api.mesh-mulan.corpautohome.com/login/sso/login?return_url=${location.href}`;
		window.location.href = url;
		ElMessageBox.alert('您已退出登录，请重新登录', '提示', {}).then(() => { }).catch(() => { });
		return;
	}
	return response.data;
}, (error) => {
	// 对响应错误做点什么
	if (error.message.indexOf('timeout') != -1) {
		ElMessage.error('网络超时');
	} else if (error.message == 'Network Error') {
		ElMessage.error('网络连接错误');
	} else {
		if (error.response.data) ElMessage.error(error.response.statusText);
		else ElMessage.error('接口路径找不到');
	}
	return Promise.reject(error);
}
);

// 导出 axios 实例
export default service;
